//
//  GXQueryListInnerViewController.swift
//  GXKit_Swift
//
//  Created by guangxiao on 2018/1/17.
//  Copyright © 2018年 guangxiao. All rights reserved.
//

import UIKit

class GXQueryListInnerViewController: UIViewController {
    var tableView:UITableView!
    fileprivate var recruitmentArea:RecruitmentArea = .foreign
    var foreignDataSource:[GXForeignCellModel] = [GXForeignCellModel](){
        didSet{
            if recruitmentArea == .foreign{
                tableView.reloadData()
            }
        }
    }
    var inlandDataSource:[GXInlandCellModel] = [GXInlandCellModel](){
        didSet{
            if recruitmentArea == .inland{
                tableView.reloadData()
            }
        }
    }

    
    convenience init(recruitArea:RecruitmentArea){
        self.init()
        self.recruitmentArea = recruitArea
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()

        tableView = UITableView(frame: view.bounds, style: .grouped)
        tableView.delegate = self
        tableView.dataSource = self
        if recruitmentArea == .foreign{
            tableView.register(GXForeignTableViewCell.self, forCellReuseIdentifier: GXForeignTableViewCell.gx_reuseIdentifier)
        }else{
            tableView.register(GXInlandTableViewCell.self, forCellReuseIdentifier: GXInlandTableViewCell.gx_reuseIdentifier)
        }
        tableView.allowsSelection = true
        tableView.allowsMultipleSelectionDuringEditing = true
        
        view.addSubview(tableView)
        
        
    }



}


extension GXQueryListInnerViewController:SwipeTableViewCellDelegate{
    func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath, for orientation: SwipeActionsOrientation) -> [SwipeAction]? {
        if orientation == .right{
            let deleteAction = SwipeAction(style: .destructive, title: nil, handler: { (action, index) in
                
            })
            deleteAction.image = UIImage(named: "Trash-circle")
            let topAction = SwipeAction(style: .default, title: nil, handler: { (action, index) in
                
            })
            //            Unread-circle
            topAction.image = UIImage(named:"Read-circle")
            return [deleteAction,topAction]
        }
        return nil
    }
}
extension GXQueryListInnerViewController:UITableViewDelegate,UITableViewDataSource{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return recruitmentArea == .foreign ? foreignDataSource.count : inlandDataSource.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if recruitmentArea == .foreign{
            let cell = tableView.dequeueReusableCell(withIdentifier: GXForeignTableViewCell.gx_reuseIdentifier, for: indexPath) as! GXForeignTableViewCell
            cell.delegate = self
            return cell
        }else{
            let cell = tableView.dequeueReusableCell(withIdentifier: GXInlandTableViewCell.gx_reuseIdentifier, for: indexPath) as! GXInlandTableViewCell
            cell.delegate = self
            return cell
        }
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if !tableView.isEditing{
            tableView.deselectRow(at: indexPath, animated: true)
        }
        
        //        let moveElement = dataSource.remove(at: indexPath.row)
        //        dataSource.insert(moveElement, at: 0)
        //        tableView.moveRow(at: indexPath, to: IndexPath(row: 0, section: 0))
        
    }
    
    
    func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
        
    }
}
extension GXQueryListInnerViewController{
    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
        return true
    }
    func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
        return UITableViewCellEditingStyle(rawValue: UITableViewCellEditingStyle.delete.rawValue|UITableViewCellEditingStyle.insert.rawValue)!
    }
}

extension GXQueryListInnerViewController{
    //    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    //        return 200
    //    }
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 66
    }
    //
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        
        return nil
    }
    
    
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return CGFloat.leastNormalMagnitude
    }
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return CGFloat.leastNormalMagnitude
    }
    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        return nil
    }
}
